// // Demo 函数会在 Person 类定义时执行
// // 参数说明：target参数是被装饰的类，Person
// function Demo(target: any) {
// 	console.log(target);
// }

// /**
//  *
//  * 返回值：
//  *  类装饰器有返回值：返回一个新的类，那这个类将替换掉被装饰的类
//  *  类装饰器无返回值：被装饰的类不变
//  *
//  *  方法装饰器有返回值：返回一个新的方法，那这个方法将替换掉被装饰的方法
//  *  方法装饰器无返回值：被装饰的方法不变
//  *
//  *  属性装饰器有返回值：返回一个新的属性，那这个属性将替换掉被装饰的属性
//  *  属性装饰器无返回值：被装饰的属性不变
//  */

// function CustomString(target: any) {
// 	target.prototype.toString = function () {
// 		return JSON.stringify(this);
// 	};
// 	Object.seal(target.prototype);
// }

// @Demo
// class Person {
// 	constructor(public name: string, public age: number) {}
// }

// // ---
// type Constructor = new (...args: any[]) => {};
